package com.gitee.wsl.transform.encode.pinyin


import com.gitee.wsl.transform.encode.pinyin.trie.Trie
import kotlin.jvm.JvmStatic

internal object Utils {
    fun dictsToTrie(pinyinDicts: List<PinyinDict>): Trie? {
        val all: MutableSet<String> = mutableSetOf()
        val builder = Trie.builder()
        for (dict in pinyinDicts) {
            all.addAll(dict.words())
        }
        if (all.isNotEmpty()) {
            for (key in all) {
                builder.addKeyword(key)
            }
            return builder.build()
        }
        return null
    }
}

//
//object PinYinUtil {
//    fun getAllPinyin(hanzi: String): String {
//        //输出格式设置
//        val format: HanyuPinyinOutputFormat = HanyuPinyinOutputFormat()
//        /**
//         * 输出大小写设置
//         *
//         * LOWERCASE:输出小写
//         * UPPERCASE:输出大写
//         */
//        format.setCaseType(HanyuPinyinCaseType.LOWERCASE)
//
//        /**
//         * 输出音标设置
//         *
//         * WITH_TONE_MARK:直接用音标符（必须设置WITH_U_UNICODE，否则会抛出异常）
//         * WITH_TONE_NUMBER：1-4数字表示音标
//         * WITHOUT_TONE：没有音标
//         */
//        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE)
//
//        /**
//         * 特殊音标ü设置
//         *
//         * WITH_V：用v表示ü
//         * WITH_U_AND_COLON：用"u:"表示ü
//         * WITH_U_UNICODE：直接用ü
//         */
//        format.setVCharType(HanyuPinyinVCharType.WITH_U_AND_COLON)
//
//        val hanYuArr = hanzi.trim { it <= ' ' }.toCharArray()
//        val pinYin: StringBuilder = StringBuilder()
//
//        try {
//            var i = 0
//            val len = hanYuArr.size
//            while (i < len) {
//                //匹配是否是汉字
//                if (hanYuArr[i].toString().matches("[\\u4E00-\\u9FA5]+".toRegex())) {
//                    //如果是多音字，返回多个拼音，这里只取第一个
//                    val pys: Array<String?> = toHanyuPinyinStringArray(hanYuArr[i], format)
//                    pinYin.append(pys[0]).append("")
//                } else {
//                    pinYin.append(hanYuArr[i]).append("")
//                }
//                i++
//            }
//        } catch (badHanyuPinyinOutputFormatCombination: BadHanyuPinyinOutputFormatCombination) {
//            badHanyuPinyinOutputFormatCombination.printStackTrace()
//        }
//        return pinYin.toString()
//    }
//
//    fun getFirstPinYin(hanyu: String): String {
//        val format: HanyuPinyinOutputFormat = HanyuPinyinOutputFormat()
//        format.setCaseType(HanyuPinyinCaseType.LOWERCASE)
//        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE)
//
//        val firstPinyin: java.lang.StringBuilder = java.lang.StringBuilder()
//        val hanyuArr = hanyu.trim { it <= ' ' }.toCharArray()
//        try {
//            var i = 0
//            val len = hanyuArr.size
//            while (i < len) {
//                if (hanyuArr[i].toString().matches("[\\u4E00-\\u9FA5]+".toRegex())) {
//                    val pys: Array<String?> = PinyinHelper.toHanyuPinyinStringArray(hanyuArr[i], format)
//                    firstPinyin.append(pys[0]!!.get(0))
//                } else {
//                    firstPinyin.append(hanyuArr[i])
//                }
//                i++
//            }
//        } catch (badHanyuPinyinOutputFormatCombination: BadHanyuPinyinOutputFormatCombination) {
//            badHanyuPinyinOutputFormatCombination.printStackTrace()
//        }
//        return firstPinyin.toString()
//    }
//
//    @JvmStatic
//    fun main(args: Array<String>) {
//        val pinYin = getAllPinyin("秋水共长天一色")
//        val firstPinYin = getFirstPinYin("秋水共长天一色")
//        println("秋水共长天一色全拼：" + pinYin)
//        println("秋水共长天一色首字母：" + firstPinYin)
//    }
//}